package com.linln.wxapi;

import java.util.ArrayList;
import java.util.List;

import com.linln.modules.system.domain.Area;

public class TreeUtil {

	  
  
    /** 
     * 使用递归方法建树 
     * @param Areas 
     * @return 
     */  
    public static List<Area> buildByRecursive(List<Area> Areas) {  
        List<Area> trees = new ArrayList<Area>();  
        for (Area Area : Areas) {  
            if (0==Area.getPid()) {  
                trees.add(findChildren(Area,Areas));  
            }  
        }  
        return trees;  
    }  
  
    /** 
     * 递归查找子节点 
     * @param Areas 
     * @return 
     */  
    public static Area findChildren(Area Area,List<Area> Areas) {  
    	Area.setChildren(new ArrayList<Area>());
 
        for (Area it : Areas) {  
            if(Area.getId().equals(it.getPid())) {  
                if (Area.getChildren() == null) {  
                    Area.setChildren(new ArrayList<Area>());  
                }  
                Area.getChildren().add(findChildren(it,Areas));  
            }  
        }  
        return Area;  
    } 
    
    
    /** 
     * 循环查找父元素 
     * @param Areas 
     * @return 
     */  
    public static List<Area> findParentren(List<Area> Areas) {  
 
    	List<Area> areasnew=new ArrayList<Area>();
    	List<Area> parentnew=new ArrayList<Area>();
        for (Area area : Areas) {  
        	if(!area.getCode().contains("0000")) {
        		areasnew.add(area);
        	}else if(area.getName().contains("市")) {
        		areasnew.add(area);
        	}
        	else {
        		parentnew.add(area);
        	}
        }
    	
        for (Area area : areasnew) {  
        	/*if(area.getCode().contains("0000")) {
        		Areas.remove(area);
        		continue;
        	}*/
        	for (Area it : parentnew) {
        	
            if(area.getPid().equals(it.getId())) {  
            	area.setParentAreaName(it.getName());  
            }
        	}
        }  
        return areasnew;  
    }
    
    
    /** 
     * 循环查找父元素 
     * @param Areas 
     * @return 
     */  
    public static List<Area> findParentren(List<Area> sonAreas,List<Area> parentAreas) {  
 
    	for (Area area : sonAreas) {  
        	for (Area it : parentAreas) {
        	
            if(area.getPid().equals(it.getId())) {  
            	area.setParentAreaName(it.getName());  
            }
        	}
        }  
        return sonAreas;  
    }
    
     
    /** 
     * 循环查找父元素 
     * @param Areas 
     * @return 
     */  
    public static List<Long> findParentrenIds(List<Area> sonAreas) {  
 
    	List<Long> ids=new ArrayList<Long>();
    	for (Area area : sonAreas) {  
    		ids.add(area.getPid());
        }  
        return ids;  
    }
}
